﻿
using System;
using System.Threading;


using SpiritEngine.Source;
using SpiritEngine.Source.ApplicationLayer;
using SpiritEngine.Source.Utilities;


namespace Testbed
{
    #region Globals

    #endregion


    static class Program
    {
        #region Constants/Enums

        #endregion


        #region Structs

        #endregion


		#region Static Member Variables and Methods

		#endregion


        #region Member Variables

        #endregion


        #region Events/Delegates

        #endregion


        #region Constructors and Destructors (aka Finalizers)

        #endregion


        #region Non-Public Methods

        // This section is for methods that are declared as private, protected, protected internal, or internal.

        #endregion


        #region Public Methods

        static void Main(string[] args)
        {
            ISE_EngineBase engineBase = Engine.CreateSpiritEngine(args);

            engineBase.GetComponent_EngineCore().Logger.Log("LOGGING TEST!!!");

            Thread.Sleep(5000);


            /*
            // Flags utility functions test.
            
            int value =     Convert.ToInt32("11001100", 2);
            int flags =     Convert.ToInt32("01111001", 2);

            int anded =     Convert.ToInt32("01001000", 2);
            int ored =      Convert.ToInt32("11111101", 2);
            int cleared =   Convert.ToInt32("10000100", 2);
            int toggled =   Convert.ToInt32("10110101", 2);

            System.Diagnostics.Debug.WriteLine("AND:    " + SE_Misc.Flags_HasFlags(value, flags).ToString());
            System.Diagnostics.Debug.WriteLine("OR:     " + (SE_Misc.Flags_SetFlags(value, flags) == ored).ToString());
            System.Diagnostics.Debug.WriteLine("CLEAR:  " + (SE_Misc.Flags_ClearFlags(value, flags) == cleared).ToString());
            System.Diagnostics.Debug.WriteLine("TOGGLE: " + (SE_Misc.Flags_ToggleFlags(value, flags) == toggled).ToString());
            */

        }

        #endregion


        #region Interface Methods

        // This section is for methods that are part of the interfaces that the class implements.

        #endregion


        #region Event Invocation Methods

        // This section is for methods that invoke the events of this class.  For example:
        //
        // Invoke the Changed event; called whenever list changes
        // protected virtual void OnChanged(EventArgs e) 
        // {
        //		if (Changed != null)
        //			Changed(this, e);
        // }

        #endregion


        #region Operators

        #endregion


        #region Debug Methods

        // This will compile the debug code only if the DEBUG symbol is defined.
        // To define this symbol for all source files in the project, open the Project Properties,
        // and go to the Build tab.  Check the "Define DEBUG constant" checkbox.  With this box checked,
        // the compiler will automatically define the symbol DEBUG.
#if (DEBUG)
        // put all debug methods in here...
#endif

        #endregion


        #region Properties

        #endregion


    }
}
